home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / proxy_post.nasl < prev    next >
Text File  |  2005-01-14  |  3KB  |  113 lines

  1. #
  2. # This script was written by Renaud Deraison <deraison@cvs.nessus.org>
  3. #
  4. #
  5. # See the Nessus Scripts License for details
  6. #
  7.  
  8. if(description)
  9. {
  10.  script_id(10194);
  11.  script_version ("$Revision: 1.14 $");
  12.  
  13.  name["english"] = "Proxy accepts POST requests";
  14.  name["francais"] = "Le proxy accepte les requΩtes POST";
  15.  script_name(english:name["english"],
  16.           francais:name["francais"]);
  17.  
  18.  desc["english"] = "The proxy allows the users to perform
  19. POST requests like 
  20.     POST http://cvs.nessus.org:21 
  21.  
  22. Without any Content-length tag.
  23. This request may give an attacker the ability
  24. to have an interactive session.
  25.  
  26. This problem may allow attackers to go through your
  27. firewall, by connecting to sensitive ports like 23 (telnet) 
  28. using your proxy, or it can allow internal users to bypass the firewall
  29. rules and connect to ports they should not be allowed to. 
  30.  
  31. In addition to that, your proxy may be used to perform attacks against
  32. other networks.
  33.  
  34. Solution: reconfigure your proxy so that only the users of the internal
  35. network can use it, and so that it can not connect to dangerous
  36. ports (1-1024).
  37.  
  38. Risk factor : High";
  39.  
  40.  desc["francais"] = "Le proxy autorise les utilisateurs
  41. faire des requΩtes POST, telles que :
  42.  
  43.     POST http://cvs.nessus.org:21
  44.     
  45. Sans tag de Content-length.
  46. Cette requΩte permet α celui qui la fait d'obtenir une session
  47. interactive.
  48.  
  49. Ce problΦme peut permettre α des pirates de passer au travers
  50. de votre firewall, en se connectant α des ports sensibles, tels
  51. que 23 (telnet), ou bien il peut permettre aux utilisateurs
  52. internes d'outrepasser les rΦgles de sortie du firewall et ainsi
  53. de se connecter sur des ports auxquels ils n'auraient normallement
  54. pas accΦs.
  55.  
  56. En plus de ceci, votre proxy peut etre utiliser pour mener des
  57. attaques contre d'autres rΘseaux.
  58.  
  59. Solution : reconfigurez votre proxy de telle sorte que seuls
  60. les utilisateurs de votres rΘseau interne puissent s'en servir,
  61. et qu'il refuse de se connecter aux ports 1-1024.
  62.  
  63. Facteur de risque : TrΦs ΘlevΘ";
  64.  
  65.  
  66.  script_description(english:desc["english"],
  67.              francais:desc["francais"]);
  68.  
  69.  summary["english"] = "Determines if we can use the remote web proxy against any port"; 
  70.  summary["francais"] = "Determine si nous pouvons utiliser le proxy web distant contre n'importe quel port";
  71.  script_summary(english:summary["english"],
  72.          francais:summary["francais"]);
  73.  
  74.  script_category(ACT_GATHER_INFO);
  75.  
  76.  script_copyright(english:"This script is Copyright (C) 1999 Renaud Deraison",
  77.            francais:"Ce script est Copyright (C) 1999 Renaud Deraison");
  78.  
  79.  family["english"] = "Firewalls"; 
  80.  family["francais"] = "Firewalls";
  81.  
  82.  script_family(english:family["english"],
  83.             francais:family["francais"]);
  84.  script_dependencie("find_service.nes", "proxy_use.nasl");
  85.  script_require_keys("Proxy/usage");
  86.  script_require_ports("Services/http_proxy", 8080);
  87.  exit(0);
  88. }
  89.  
  90. #
  91. # The script code starts here
  92. #
  93.  
  94. port = get_kb_item("Services/http_proxy");
  95. if(!port) port = 8080;
  96.  
  97. usable_proxy = get_kb_item("Proxy/usage");
  98. if(usable_proxy)
  99. {
  100.  if(get_port_state(port))
  101.  {
  102.   soc = open_sock_tcp(port);
  103.   if(soc)
  104.   {
  105.   command = string("POST http://", get_host_name(),":21/ HTTP/1.0\r\n\r\n");
  106.   send(socket:soc, data:command);
  107.   buffer = recv_line(socket:soc, length:4096);
  108.   if((" 200 " >< buffer)||(" 503 "><buffer))security_hole(port);
  109.   close(soc);
  110.   }
  111.  }
  112. }
  113.